home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 4 / Amoszine 4 (Disk 2 of 3).adf / CELEBRITY_SOURCE / CELEB.lha / DpaintBox.AMOS / DpaintBox.amosSourceCode < prev    next >
AMOS Source Code  |  1992-02-26  |  6KB  |  197 lines

  1. ' Dpaint type option Box, by Paul Overy. 
  2. '
  3. ' The box has three top options, Quit, Move & Sleep which can also be    
  4. ' clicked on with the mouse. 
  5. '
  6. ' The mouse will change shape when placed on box, ready for option selection.
  7. '
  8. ' Bank 15 -> Packed picture of option box and new mouse pointers.
  9. '
  10. Proc CUT_SPRITES
  11. Proc SET_UP
  12. '
  13. Do 
  14.    '  
  15.    If Sprite Col(0,4 To 4)
  16.       '
  17.       Sprite 1,,,1 : Rem Arrow pointer
  18.       '
  19.       If Mouse Key
  20.          '
  21.          ' This line only needs to be called if the box has moved,
  22.          ' Call this procedure only when needed if you have many  
  23.          ' options in your box. 
  24.          _MAKE_ZONES[X Sprite(4),Y Sprite(4)]
  25.          '
  26.          ' Relate mouse zone click to a procedure task. 
  27.          On Mouse Zone Proc _QUIT,_DRAG,_SLEEP,_DRAW,_LINE,_FILL,_CUT,_SWAP,_BLOCKS,_ZOOM,_DIR,_UNDO,_CLR,_LOAD,_SAVE
  28.       End If 
  29.    Else 
  30.       Sprite 1,,,2 : Rem Crosshair Pointer
  31.    End If 
  32.    '
  33. Loop 
  34. '
  35. Procedure _QUIT
  36.    Repeat : Until Mouse Key=0 or Mouse Zone<>1
  37.    If Mouse Zone=1
  38.       Stop 
  39.    End If 
  40. End Proc
  41. Procedure _DRAG
  42.    X_START=X Mouse : Y_START=Y Mouse
  43.    X_BOX=X Sprite(4) : Y_BOX=Y Sprite(4)
  44.    Sprite Off 2
  45.    Repeat 
  46.       Amreg(4,0)=X Mouse-X_START+X_BOX
  47.       Amreg(4,1)=Y Mouse-Y_START+Y_BOX
  48.    Until Mouse Key=0
  49. End Proc
  50. Procedure _SLEEP
  51.    Repeat : Until Mouse Key=0 or Mouse Zone<>3
  52.    If Mouse Zone=3
  53.       Sprite Off 2
  54.       Sprite 4,,,9-I Sprite(4)
  55.    End If 
  56. End Proc
  57. '
  58. Procedure _DRAW
  59.    Sprite 2,X Sprite(4),Y Sprite(4)+9,6
  60.    Repeat : Until Mouse Key=0 or Mouse Zone<>4
  61. End Proc
  62. Procedure _LINE
  63.    Sprite 2,X Sprite(4)+12,Y Sprite(4)+9,6
  64.    Repeat : Until Mouse Key=0 or Mouse Zone<>5
  65. End Proc
  66. Procedure _FILL
  67.    Sprite 2,X Sprite(4),Y Sprite(4)+21,6
  68.    Repeat : Until Mouse Key=0 or Mouse Zone<>6
  69. End Proc
  70. Procedure _CUT
  71.    Sprite 2,X Sprite(4)+12,Y Sprite(4)+21,6
  72.    Repeat : Until Mouse Key=0 or Mouse Zone<>7
  73. End Proc
  74. Procedure _SWAP
  75.    Sprite 2,X Sprite(4),Y Sprite(4)+33,6
  76.    Repeat : Until Mouse Key=0 or Mouse Zone<>8
  77. End Proc
  78. Procedure _BLOCKS
  79.    Sprite 2,X Sprite(4)+12,Y Sprite(4)+33,6
  80.    Repeat : Until Mouse Key=0 or Mouse Zone<>9
  81. End Proc
  82. Procedure _ZOOM
  83.    Sprite 2,X Sprite(4),Y Sprite(4)+45,6
  84.    Repeat : Until Mouse Key=0 or Mouse Zone<>10
  85. End Proc
  86. Procedure _DIR
  87.    Sprite 2,X Sprite(4)+12,Y Sprite(4)+45,6
  88.    Repeat : Until Mouse Key=0 or Mouse Zone<>11
  89. End Proc
  90. Procedure _UNDO
  91.    Sprite 2,X Sprite(4),Y Sprite(4)+57,6
  92.    Repeat : Until Mouse Key=0 or Mouse Zone<>12
  93.    Sprite Off 2
  94. End Proc
  95. Procedure _CLR
  96.    Sprite 2,X Sprite(4)+12,Y Sprite(4)+57,6
  97.    Repeat : Until Mouse Key=0 or Mouse Zone<>13
  98.    Sprite Off 2
  99. End Proc
  100. Procedure _LOAD
  101.    Bell 
  102. End Proc
  103. Procedure _SAVE
  104.    Boom 
  105. End Proc
  106. '
  107. Procedure _MAKE_ZONES[X1,Y1]
  108.    '
  109.    ' I'm not to keen on having loops in critical parts of my code.    
  110.    '
  111.    ' NOTE: If you have the Easy life extension  
  112.    '       this procedure can be carried out in ONE LINE! 
  113.    '
  114.    X=X Screen(X1)
  115.    Y=Y Screen(Y1)
  116.    '
  117.    ' The top three zone options 
  118.    Set Zone 1,X+1,Y+1 To X+4,Y+6 : Set Zone 2,X+7,Y To X+12,Y+7 : Set Zone 3,X+14,Y To X+22,Y+7
  119.    '
  120.    If I Sprite(4)<>5
  121.       'Main set of options 
  122.       Set Zone 4,X,Y+9 To X+10,Y+19 : Set Zone 5,X+12,Y+9 To X+22,Y+19
  123.       Set Zone 6,X,Y+21 To X+10,Y+31 : Set Zone 7,X+12,Y+21 To X+22,Y+31
  124.       Set Zone 8,X,Y+33 To X+10,Y+43 : Set Zone 9,X+12,Y+33 To X+22,Y+43
  125.       Set Zone 10,X,Y+45 To X+10,Y+55 : Set Zone 11,X+12,Y+45 To X+22,Y+55
  126.       Set Zone 12,X,Y+57 To X+10,Y+67 : Set Zone 13,X+12,Y+57 To X+22,Y+67
  127.       ' Save & load
  128.       Set Zone 14,X,Y+69 To X+22,Y+79 : Set Zone 15,X,Y+81 To X+22,Y+91
  129.    End If 
  130.    '
  131. End Proc
  132. Procedure CUT_SPRITES
  133.    '
  134.    Bob Update Off : Autoback 0
  135.    Set Sprite Buffer 128 : Hide 
  136.    '
  137.    Unpack 15 To 0
  138.    '
  139.    ' Mouse pointer frames 
  140.    Get Sprite 1,0,96 To 16,112
  141.    Get Sprite 2,16,96 To 32,112
  142.    Get Sprite 3,32,96 To 48,104
  143.    ' Option Box & sleep option box
  144.    Get Sprite 4,0,0 To 32,96
  145.    Get Sprite 5,0,0 To 32,8
  146.    ' Option selected shadow.
  147.    Get Sprite 6,48,96 To 64,112
  148.    '
  149.    Cls 0
  150.    Hot Spot 1,5,5 : Hot Spot 2,5,5 : Hot Spot 3,5,5
  151.    '
  152.    For K=0 To 3
  153.       For L=0 To 2
  154.          C=Colour(1+L)
  155.          Colour 4*K+L+17,C
  156.       Next L
  157.    Next K
  158.    '
  159.    Make Mask 
  160.    '
  161. End Proc
  162. Procedure SET_UP
  163.    '
  164.    ' New mouse routine. 
  165.    MOUSE1$="          Loop:         "
  166.    MOUSE1$=MOUSE1$+"     Let X=XM;  "
  167.    MOUSE1$=MOUSE1$+"     Let Y=YM;  "
  168.    MOUSE1$=MOUSE1$+"     Pause      "
  169.    MOUSE1$=MOUSE1$+"  Jump Loop"
  170.    '
  171.    ' Stops option box from leaving screen.  
  172.    BX$="      Loop:                          "
  173.    BX$=BX$+"     If R0<XH(0,0)   then Jump A "
  174.    BX$=BX$+"     If R0>XH(0,297) then Jump B "
  175.    BX$=BX$+"     If R1<YH(0,0)   then Jump C "
  176.    BX$=BX$+"     If R1>YH(0,164) & A=4 then Jump D "
  177.    BX$=BX$+"     If R1>YH(0,248) & A=5 then Jump E "
  178.    BX$=BX$+"     Let X=R0; Let Y=R1; Pause   "
  179.    BX$=BX$+"  Jump Loop                      "
  180.    BX$=BX$+"     A: Let R0=XH(0,0)           "
  181.    BX$=BX$+"  Jump Loop                      "
  182.    BX$=BX$+"     B: Let R0=XH(0,297)         "
  183.    BX$=BX$+"  Jump Loop                      "
  184.    BX$=BX$+"     C: Let R1=YH(0,0)           "
  185.    BX$=BX$+"  Jump Loop                      "
  186.    BX$=BX$+"     D: Let R1=YH(0,164)         "
  187.    BX$=BX$+"  Jump Loop                      "
  188.    BX$=BX$+"     E: Let R1=YH(0,248)         "
  189.    BX$=BX$+"  Jump Loop                      "
  190.    '
  191.    Sprite 0,0,0,3 : Sprite 1,200,100,1 : Sprite 4,0,0,4
  192.    Amal 0,MOUSE1$ : Amal 1,MOUSE1$ : Amal 4,BX$
  193.    Amal On 
  194.    '
  195.    Limit Mouse : Amreg(4,0)=0 : Amreg(4,1)=0
  196.    Reserve Zone 16
  197. End Proc